1. Field of the Invention
The present invention relates to the field of a networked computer system. Specifically, the present invention relates to the transfer and synchronization of multiple data streams across a computer network or various types of communication media.
2. Description of Related Art
In a networked computer system, it is often necessary to send multiple streams of data to a remote network site. Typically, the streams of data must be processed in the correct order and synchronized with respect to each data stream. For example, audio and video streams in a teleconferencing application must be synchronized to provide the correct relationship between the audio and video data. Conventional systems implement data streams as a plurality of data packets that can be independently transferred across a network. Currently, packetized data streams may be synchronized by interleaving the data packets that make up the streams in such a way that the packets are sent to the network in synchronized order. This interleaving method has several drawbacks. First, not all networks can guarantee an in-order delivery of data packets. The synchronization between data streams may be lost by a network that randomly delays the transfer of a data packet. Secondly, even if in-order delivery of packets is guaranteed, the interleaving method does not allow synchronization of data streams where the data stream cannot be sent in a single interleaved stream. For example, where the data streams are sent on different network channels, two different network addresses, or on different networks, the data streams cannot be sent in a single interleaved stream. In other situations, multiple originators or producers of data streams (i.e. servers) may exist on a network. In this case, data streams from a single server must be synchronized with respect to each other; but, synchronization from one server to another may not be required. In other situations it may be necessary to mix a set of data streams originated by multiple servers into one unified data stream for delivery to a client network node. For example, instead of two servers each sending an audio and video stream to a client node for processing, it may be more efficient to mix the audio signals into a unified stream which then must be synchronized with both video streams. Conventional systems are incapable of providing these multiple levels of data stream synchronization.
Thus, a better method for synchronizing multiple independent data streams in a networked computer system is needed.